package com.linghu.tankgame;

import java.util.Vector;

/**
 * @author 令狐荣豪
 * @version 1.0
 * 敌人的坦克
 */
public class EnemyTank extends Tank implements Runnable {
    //在敌人坦克类，使用vector保存多个shot
    Vector<Shot> shots=new Vector<>();
    boolean isLive=true;
    public EnemyTank(int x, int y) {
        super(x, y);
    }

    @Override
    public void run() {
        while (true){

            //这里判断如果shots.size()=0，创建一颗子弹，放入到shots集合
            //，并启动
            if (isLive && shots.size()==0){
                Shot s=null;

                switch (getDirect()){
                    case 0:
                        s=new Shot(getX()+20,getY(),0);
                        break;
                    case 1:
                        s=new Shot(getX()+60,getY()+20,1);
                        break;
                    case 2:
                        s=new Shot(getX()+20,getY()+60,2);
                        break;
                    case 3:
                        s=new Shot(getX(),getY()+20,3);
                        break;
                }
                shots.add(s);
                //启动
                new Thread(s).start();
            }

            //根据坦克的方向继续移动
            switch (getDirect()){
                case 0://向上
                    for(int i=0;i<30;i++){
                        if (getY()>0){
                            moveUp();
                        }
                        //休眠50毫秒
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case 1://向右
                    for(int i=0;i<30;i++){
                        if (getX()+60<1000){
                            moveRight();
                        }
                        //休眠50毫秒
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case 2://向下
                    for(int i=0;i<30;i++){
                        if (getY()+60<750){
                            moveDown();
                        }
                        //休眠50毫秒
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
                case 3://向左
                    for(int i=0;i<30;i++){
                        if (getX()>0){
                            moveLeft();
                        }
                        //休眠50毫秒
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    break;
            }


            //然后随机的改变坦克方向0-3
            setDirect((int)(Math.random()*4));
            //写多线程并发程序时，一定要考虑什么时候结束
            if (!isLive){
                break;//退出线程
            }
        }
    }
}
